#!/bin/bash

#
# Nombre:      stop.sh
# Autor:       Pablo Martin Viva <pmviva@gmail.com>
# Fecha:       19/04/2011
# Descripcion: Provee la funcionalidad de parar comandos
#              <<inteligentemente>> verificando si el programa ya se
#              encuentra en ejecucion y pararlo.
#

#
# Modo de uso:
#
# ./stop.sh <<COMANDO>>
#
# Donde <<COMANDO>> es el nombre del comando a parar por el script stop.sh

#
# Verifico que recibo al menos 1 parametro obligatorio:
# 1) COMANDO
#
if [ $# -lt 1 ]
then
        . gralog.sh "STOP" "Error#1: Cantidad de parametros invalida" "F"
        exit 1
fi

#
# Obtengo parametro comando
#
comandoParar=$1

#
# Obtiene el comando pgrep a usar
#
comandoPgrep=`which pgrep`

#
# Obtiene el comando pkill a usar
#
comandoPkill=`which pkill`

#
# Verifica si el comando pgrep existe en el PATH en caso contrario aborta
#
if [ ! -f $comandoPgrep ]
then
        . gralog.sh "STOP" "Error#2: El comando pgrep no se encuentra en el PATH de ejecucion" "F"
        exit 2
fi

#
# Verifica si el comando pkill existe en el PATH en caso contrario aborta
#
if [ ! -f $comandoPkill ]
then
	. gralog.sh "STOP" "Error#3: El comando pkill no se encuentra en el PATH de ejecucion" "F"
	exit 3
fi

#
# Obtiene el PID del comando a parar
#
pid=`$comandoPgrep $comandoParar`

#
# Verifica si el comando a parar ya se encuentra en ejecucion y lo para
#
if [ ! -z $pid ]
then
        . gralog.sh "STOP" "Parando comando $comandoParar con process id $pid" "I"
         $comandoPkill -KILL $comandoParar

	if [ $? -ne 0 ]
	then
		. gralog.sh "STOP" "Error#4 Error parando el comando $comandoParar con process id $pid" "I"
	fi
else
        . gralog.sh "STOP" "Programa $comandoParar no se encuentra en ejecucion" "W"
fi
